﻿
namespace Orz.Framework.Core
{
    /// <summary>
    /// The delegate with no arguments.
    /// </summary>
    public delegate void VoidDelegateHandler();

    /// <summary>
    /// The delegate with one arguments.
    /// </summary>
    public delegate void VoidDelegateHandler<TArg>(TArg arg);

    /// <summary>
    /// The delegate with two arguments.
    /// </summary>
    public delegate void VoidDelegateHandler<TArg1, TArg2>(TArg1 arg1, TArg2 arg2);

    /// <summary>
    /// The delegate with no arguments and a specified return type.
    /// </summary>
    public delegate TResult DelegateHandler<TResult>();

    /// <summary>
    /// The delegate with one arguments and a specified return type.
    /// </summary>
    public delegate TResult DelegateHandler<TArg, TResult>(TArg arg);

    /// <summary>
    /// The delegate with two arguments and a specified return type.
    /// </summary>
    public delegate TResult DelegateHandler<TArg1, TArg2, TResult>(TArg1 arg1, TArg2 arg2);
}
